home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / gaim / gtkconv.h < prev    next >
C/C++ Source or Header  |  2005-10-18  |  8KB  |  336 lines

  1. /**
  2.  * @file gtkconv.h GTK+ Conversation API
  3.  * @ingroup gtkui
  4.  *
  5.  * gaim
  6.  *
  7.  * Gaim is the legal property of its developers, whose names are too numerous
  8.  * to list here.  Please refer to the COPYRIGHT file distributed with this
  9.  * source distribution.
  10.  *
  11.  * This program is free software; you can redistribute it and/or modify
  12.  * it under the terms of the GNU General Public License as published by
  13.  * the Free Software Foundation; either version 2 of the License, or
  14.  * (at your option) any later version.
  15.  *
  16.  * This program is distributed in the hope that it will be useful,
  17.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  18.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  19.  * GNU General Public License for more details.
  20.  *
  21.  * You should have received a copy of the GNU General Public License
  22.  * along with this program; if not, write to the Free Software
  23.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  24.  */
  25. #ifndef _GAIM_GTKCONVERSATION_H_
  26. #define _GAIM_GTKCONVERSATION_H_
  27.  
  28. #include "gtkgaim.h"
  29.  
  30. #include "conversation.h"
  31.  
  32. enum {
  33.     CHAT_USERS_ICON_COLUMN,
  34.     CHAT_USERS_NAME_COLUMN,
  35.     CHAT_USERS_FLAGS_COLUMN,
  36.     CHAT_USERS_COLUMNS
  37. };
  38.  
  39. /**************************************************************************
  40.  * @name Structures
  41.  **************************************************************************/
  42. /*@{*/
  43.  
  44. typedef struct _GaimGtkWindow       GaimGtkWindow;
  45. typedef struct _GaimGtkImPane       GaimGtkImPane;
  46. typedef struct _GaimGtkChatPane     GaimGtkChatPane;
  47. typedef struct _GaimGtkConversation GaimGtkConversation;
  48.  
  49. /**
  50.  * A GTK+ representation of a graphical window containing one or more
  51.  * conversations.
  52.  */
  53. struct _GaimGtkWindow
  54. {
  55.     GtkWidget *window;           /**< The window.                      */
  56.     GtkWidget *notebook;         /**< The notebook of conversations.   */
  57.  
  58.     struct
  59.     {
  60.         GtkWidget *menubar;
  61.  
  62.         GtkWidget *view_log;
  63.  
  64.         GtkWidget *send_file;
  65.         GtkWidget *add_pounce;
  66.         GtkWidget *get_info;
  67.         GtkWidget *warn;
  68.         GtkWidget *invite;
  69.  
  70.         GtkWidget *alias;
  71.         GtkWidget *block;
  72.         GtkWidget *add;
  73.         GtkWidget *remove;
  74.  
  75.         GtkWidget *insert_link;
  76.         GtkWidget *insert_image;
  77.  
  78.         GtkWidget *logging;
  79.         GtkWidget *sounds;
  80.         GtkWidget *show_formatting_toolbar;
  81.         GtkWidget *show_timestamps;
  82.  
  83.         GtkWidget *send_as;
  84.  
  85.         GtkWidget *typing_icon;
  86.  
  87.         GtkItemFactory *item_factory;
  88.  
  89.     } menu;
  90.  
  91.     /* Tab dragging stuff. */
  92.     gboolean in_drag;
  93.     gboolean in_predrag;
  94.  
  95.     gint drag_min_x, drag_max_x, drag_min_y, drag_max_y;
  96.  
  97.     gint drag_motion_signal;
  98.     gint drag_leave_signal;
  99. };
  100.  
  101. /**
  102.  * A GTK+ Instant Message pane.
  103.  */
  104. struct _GaimGtkImPane
  105. {
  106.     GtkWidget *warn;
  107.     GtkWidget *block;
  108.     GtkWidget *send_file;
  109.     GtkWidget *sep1;
  110.     GtkWidget *sep2;
  111.     GtkWidget *check;
  112.     GtkWidget *progress;
  113.  
  114.     gboolean a_virgin;
  115.  
  116.     /* Buddy icon stuff */
  117.     GtkWidget *icon_container;
  118.     GtkWidget *icon;
  119.     gboolean show_icon;
  120.     gboolean animate;
  121.     GdkPixbufAnimation *anim;
  122.     GdkPixbufAnimationIter *iter;
  123.     guint32 icon_timer;
  124. };
  125.  
  126. /**
  127.  * GTK+ Chat panes.
  128.  */
  129. struct _GaimGtkChatPane
  130. {
  131.     GtkWidget *count;
  132.     GtkWidget *list;
  133.     GtkWidget *invite;
  134.     GtkWidget *topic_text;
  135.     GtkWidget *sep;
  136. };
  137.  
  138. /**
  139.  * A GTK+ conversation pane.
  140.  */
  141. struct _GaimGtkConversation
  142. {
  143.     gboolean make_sound;
  144.     gboolean show_formatting_toolbar;
  145.     gboolean show_timestamps;
  146.  
  147.     GtkTooltips *tooltips;
  148.  
  149.     GtkWidget *tab_cont;
  150.     GtkWidget *tabby;
  151.     GtkWidget *menu_tabby;
  152.  
  153.     GtkWidget *imhtml;
  154.     GtkTextBuffer *entry_buffer;
  155.     GtkWidget *entry;
  156.  
  157.     GtkWidget *add;
  158.     GtkWidget *remove;
  159.     GtkWidget *info;
  160.     GtkWidget *send;
  161.     GtkWidget *close; /* "x" on the tab */
  162.     GtkWidget *icon;
  163.     GtkWidget *tab_label;
  164.     GtkWidget *menu_icon;
  165.     GtkWidget *menu_label;
  166.     GtkSizeGroup *sg;
  167.  
  168.     GtkWidget *bbox;
  169.     GtkWidget *sw;
  170.     GtkWidget *lower_hbox;
  171.  
  172.     GtkWidget *toolbar;
  173.  
  174.     struct
  175.     {
  176.         GtkWidget *image;
  177.         GtkWidget *search;
  178.  
  179.     } dialogs;
  180.  
  181.     union
  182.     {
  183.         GaimGtkImPane   *im;
  184.         GaimGtkChatPane *chat;
  185.  
  186.     } u;
  187. };
  188.  
  189. #define GAIM_GTK_WINDOW(win) \
  190.     ((GaimGtkWindow *)(win)->ui_data)
  191.  
  192. #define GAIM_GTK_CONVERSATION(conv) \
  193.     ((GaimGtkConversation *)(conv)->ui_data)
  194.  
  195. #define GAIM_IS_GTK_WINDOW(win) \
  196.     (gaim_conv_window_get_ui_ops(win) == gaim_gtk_conversations_get_win_ui_ops())
  197.  
  198. #define GAIM_IS_GTK_CONVERSATION(conv) \
  199.     (gaim_conversation_get_ui_ops(conv) == \
  200.      gaim_gtk_conversations_get_conv_ui_ops())
  201.  
  202. /*@}*/
  203.  
  204. /**************************************************************************
  205.  * @name GTK+ Conversation API
  206.  **************************************************************************/
  207. /*@{*/
  208.  
  209. /**
  210.  * Returns the UI operations structure for GTK windows.
  211.  *
  212.  * @return The GTK window operations structure.
  213.  */
  214. GaimConvWindowUiOps *gaim_gtk_conversations_get_win_ui_ops(void);
  215.  
  216. /**
  217.  * Returns the UI operations structure for GTK conversations.
  218.  *
  219.  * @return The GTK conversation operations structure.
  220.  */
  221. GaimConversationUiOps *gaim_gtk_conversations_get_conv_ui_ops(void);
  222.  
  223. /**
  224.  * Updates the buddy icon on a conversation.
  225.  *
  226.  * @param conv The conversation.
  227.  */
  228. void gaim_gtkconv_update_buddy_icon(GaimConversation *conv);
  229.  
  230. /**
  231.  * Updates the tab positions on all conversation windows to reflect any
  232.  * changed preferences.
  233.  */
  234. void gaim_gtkconv_update_tabs(void);
  235.  
  236. /**
  237.  * Updates the button style on chat windows to reflect any
  238.  * changed preferences.
  239.  */
  240. void gaim_gtkconv_update_chat_button_style();
  241.  
  242. /**
  243.  * Updates the button style on IM windows to reflect any
  244.  * changed preferences.
  245.  */
  246. void gaim_gtkconv_update_im_button_style();
  247.  
  248. /**
  249.  * Updates conversation buttons by protocol.
  250.  *
  251.  * @param conv The conversation.
  252.  */
  253. void gaim_gtkconv_update_buttons_by_protocol(GaimConversation *conv);
  254.  
  255. /**
  256.  * Creates a conversation button
  257.  *
  258.  * @param icon     The stock icon name.
  259.  * @param text     The text for the button.
  260.  * @param tooltip  The tooltip text.
  261.  * @param tooltips The group of tooltips.
  262.  * @param callback A function to call when the button is clicked.
  263.  * @param data     Data to pass to the callback.
  264.  *
  265.  * @return The button
  266.  */
  267. GtkWidget *gaim_gtkconv_button_new(const char *icon, const char *text,
  268.                                    const char *tooltip, GtkTooltips *tooltips,
  269.                                    void *callback, void *data);
  270.  
  271. /**
  272.  * Returns the window at the specified X, Y location.
  273.  *
  274.  * If the window is not a GTK+ window, @c NULL is returned.
  275.  *
  276.  * @param x The X coordinate.
  277.  * @param y The Y coordinate.
  278.  *
  279.  * @return The GTK+ window at the location, if it exists, or @c NULL otherwise.
  280.  */
  281. GaimConvWindow *gaim_gtkwin_get_at_xy(int x, int y);
  282.  
  283. /**
  284.  * Returns the index of the tab at the specified X, Y location in a notebook.
  285.  *
  286.  * @param win The GTK+ window containing the notebook.
  287.  * @param x   The X coordinate.
  288.  * @param y   The Y coordinate.
  289.  *
  290.  * @return The index of the tab at the location.
  291.  */
  292. int gaim_gtkconv_get_tab_at_xy(GaimConvWindow *win, int x, int y);
  293.  
  294. /**
  295.  * Returns the index of the destination tab at the
  296.  * specified X, Y location in a notebook.
  297.  *
  298.  * This is used for drag-and-drop functions when the tab at the index
  299.  * is a destination tab.
  300.  *
  301.  * @param win The GTK+ window containing the notebook.
  302.  * @param x   The X coordinate.
  303.  * @param y   The Y coordinate.
  304.  *
  305.  * @return The index of the tab at the location.
  306.  */
  307. int gaim_gtkconv_get_dest_tab_at_xy(GaimConvWindow *win, int x, int y);
  308.  
  309. /*@}*/
  310.  
  311. /**************************************************************************/
  312. /** @name GTK+ Conversations Subsystem                                     */
  313. /**************************************************************************/
  314. /*@{*/
  315.  
  316. /**
  317.  * Returns the gtk conversations subsystem handle.
  318.  *
  319.  * @return The conversations subsystem handle.
  320.  */
  321. void *gaim_gtk_conversations_get_handle(void);
  322.  
  323. /**
  324.  * Initializes the GTK+ conversations subsystem.
  325.  */
  326. void gaim_gtk_conversations_init(void);
  327.  
  328. /**
  329.  * Uninitialized the GTK+ conversation subsystem.
  330.  */
  331. void gaim_gtk_conversations_uninit(void);
  332.  
  333. /*@}*/
  334.  
  335. #endif /* _GAIM_GTKCONVERSATION_H_ */
  336.